package com.timmy.chi.choosephoto;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;

import com.timmy.chi.R;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 作者：陈冬冬
 * <p>
 * 说明：处理图片的工具类
 * <p>
 * 时间：2015-9-1 下午5:18:55
 */
public class DealPictureUtils {
    /**
     * 裁剪图片方法实现
     *
     * @param uri
     */
    public static void startPhotoZoom(Activity activity, Uri uri, int requestCode) {
        Log.e("DealPictureUtils", "开始--------");
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        // 设置裁剪
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // outputX outputY 是裁剪图片宽高
        intent.putExtra("outputX", 340);
        intent.putExtra("outputY", 340);
        // 必须要有一下设置，否则有的手机报错：无法加载该图片
        intent.putExtra("scale", true);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true);

        intent.putExtra("return-data", true);
        activity.startActivityForResult(intent, requestCode);
        activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);
    }

    /**
     * 复制图片
     *
     * @param srcFile    源图片的文件
     * @param targetFile 目标图片的文件
     * @return
     */
    public static File copyFile(File srcFile, File targetFile) {
        // 2.建立管道
        OutputStream os = null;
        InputStream is = null;
        try {
            os = new FileOutputStream(targetFile);
            is = new FileInputStream(srcFile);
            // 3.读取操作
            // 先建立缓冲区,为1024个字节大小
            byte[] b = new byte[1024];
            int len = 0;
            // 采用循环的方式读取文件的内容
            while ((len = is.read(b)) != -1) {
                os.write(b, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 一般先开的后关
            try {
                if (os != null)
                    os.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        return targetFile;
    }
}
